package redis

import (
	"context"
	"fmt"
	"time"

	"gitee.com/botaoshow/yuanxin/web/common/conf"

	"github.com/go-redis/redis/v8"
)

var Rdb *redis.Client

func InitRedis() {
	cfg := conf.AppConfig.Redis
	Rdb = redis.NewClient(&redis.Options{
		Addr:         cfg.Host + ":" + cfg.Port,                     // Redis 服务器地址
		Password:     cfg.Password,                                  // Redis 密码
		DB:           *cfg.Db,                                       // 使用的数据库编号
		PoolSize:     *cfg.PoolSize,                                 // 连接池大小
		MinIdleConns: *cfg.MinIdleConns,                             // 最小空闲连接数
		MaxConnAge:   time.Duration(*cfg.MaxConnAge) * time.Minute,  // 连接最大存活时间
		PoolTimeout:  time.Duration(*cfg.PoolTimeout) * time.Second, // 获取连接的超时时间
	})
	var ctx = context.Background()
	// 测试连接
	_, err := Rdb.Ping(ctx).Result()
	if err != nil {
		panic(err)
	} else {
		fmt.Println("Redis connected")
	}
}

func Close() {
	err := Rdb.Close()
	if err != nil {
		panic(err)
	} else {
		fmt.Println("Redis closed")
	}
}
